/**
在TypeScript中，枚举（Enum）是一种特殊的类型，用于定义一组命名的常量。枚举提供了一种更具可读性的方式来处理一组相关的值。
  1. 枚举的定义
  - 使用  `enum`  关键字定义枚举。枚举可以包含多个命名的常量。
  - 例如：
  enum Direction {
      Up,
      Down,
      Left,
      Right
  }
  2. 默认值
  - 如果没有显式指定枚举成员的值，TypeScript会自动为每个成员分配一个递增的数字值，从0开始。
  - 例如：
  console.log(Direction.Up);    // 输出：0
  console.log(Direction.Down);  // 输出：1
  console.log(Direction.Left);  // 输出：2
  console.log(Direction.Right); // 输出：3
  3. 自定义值
  - 可以为枚举成员指定自定义值，这些值可以是数字或字符串。
  - 例如：
  enum Status {
      Active = 1,
      Inactive = 0,
      Pending = "pending"
  }

  console.log(Status.Active);   // 输出：1
  console.log(Status.Pending);   // 输出："pending"
  4. 反向映射
  - 对于数字枚举，TypeScript会生成反向映射，可以通过值获取对应的枚举名称。
  - 例如：
  enum Color {
      Red,
      Green,
      Blue
  }

  console.log(Color[0]); // 输出："Red"
  console.log(Color[1]); // 输出："Green"
  5. 常量枚举
  - 使用  `const enum`  定义常量枚举，常量枚举在编译时会被内联，适用于性能要求较高的场景。
  - 例如：
  const enum Directions {
      Up,
      Down,
      Left,
      Right
  }

  // 编译后会直接替换为对应的数字值
  let dir = Directions.Up; // dir 的值为 0
  6. 使用场景
  - 枚举适用于需要一组相关常量的场景，如状态、方向、类型等。它们提高了代码的可读性和可维护性。

  7. 总结
  枚举类型是TypeScript中一种强大的特性，提供了一种清晰、可读的方式来处理一组相关的常量。通过定义枚举，开发者可以提高代码的可维护性，减少硬编码的常量使用，增强代码的可理解性。
 */
// 定义枚举类型
enum Direction {
  LEFT,
  RIGHT
}

const d1: Direction = Direction.LEFT;

function turnDirection(direction: Direction) {
  switch(direction) {
    case Direction.LEFT:
      console.log('向左转', Direction.LEFT, Direction[0]);
      break;
    case Direction.RIGHT:
      console.log('向右转', Direction.RIGHT, Direction[1]);
      break;
  }
}

// 监听键盘的点击
turnDirection(Direction.LEFT)

export {}